home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 2510.ZIP / TRSOURCE.EXE / LEADCHAR.C < prev    next >
C/C++ Source or Header  |  1990-10-22  |  1KB  |  56 lines

  1. /*********
  2. *  LEADCHAR.C
  3. *
  4. *  by Tom Rettig
  5. *
  6. * Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  7. *
  8. *  Syntax: LEADCHAR( <expC>, <char> )
  9. *  Return: <expC> with each leading space replaced by <char>.
  10. *          Unchanged if <char> omitted or null, or if out of memory.
  11. *  Note  : Return string is same length as <expC>.
  12. *********/
  13.  
  14. #include "trlib.h"
  15.  
  16. TRTYPE leadchar()
  17. {
  18.    char *instr, *replace, *ret;
  19.    int i, j;
  20.    static char funcname[] = { "leadchar" };
  21.  
  22.    if ( PCOUNT==2 && ISCHAR(1) && ISCHAR(2) )
  23.    {
  24.       instr   = _parc(1);
  25.       replace = _parc(2);
  26.       ret     = _tr_allocmem((unsigned)(_tr_strlen(instr)+1));
  27.  
  28.       if ( ret )
  29.       {
  30.          if (instr[0]==SPACEC && replace[0] )
  31.          {
  32.             for ( i=j=0; instr[j]==SPACEC; i++, j++ )
  33.                ret[i] = replace[0];
  34.  
  35.             for ( ; instr[j]; i++, j++ )
  36.                ret[i] = instr[j];
  37.  
  38.             ret[i] = NULLC;
  39.  
  40.             _retc( ret );
  41.          }
  42.          else  /* return unchanged if no leading spaces, or null replace */
  43.             _retc( instr );
  44.  
  45.          _tr_freemem( ret,(unsigned)(_tr_strlen(instr)+1));
  46.       }
  47.       else  /* return unchanged if no memory */
  48.          _retc( instr );
  49.    }
  50.    else
  51.    if ( PCOUNT==1 && ISCHAR(1) )
  52.       _retc( _parc(1) );
  53.    else
  54.       _retc( _tr_errmsgs(funcname,E_SYNTAX) );
  55. }
  56.